﻿/********************************************************************************
** @ Date:2025/06/25
** @ Author: Gaojia
** @ Description:  轮播管理界面
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef UCarouselManager_H
#define UCarouselManager_H
#include <QWidget>
#include <QXmlStreamReader>
#include "UCarousePage.h"
#include "CPageCarouse.h"
#include "CNodeCarouse.h"
#include "ui_UCarouselManager.h"
class UCarouselManager : public QWidget
{
	Q_OBJECT

public:
	UCarouselManager(QWidget *parent = nullptr);
	~UCarouselManager();
	void refushUi();
	void setCarouseWidget(UCarousePage *pWidget);     //设置轮播显示管理界面指针
	void addNode(CBaseCarouse* parent);               // 添加普通节点
	void addPage(CBaseCarouse* parent);               // 添加组合场景
	void deleteNode(CBaseCarouse* node);              // 删除节点
	void initUi();  // 初始化界面
private:      
	void createNullMenu(const QPoint& globalPos);                   // 创建空白处点击菜单
	void showContextMenu(CBaseCarouse* node, const QPoint& globalPos); // 显示右键菜单
	void showContextLeft(CBaseCarouse* node); // 鼠标左键响应
	void connectTree();                                                // 连接信号槽
	void refushMenu();
protected:
	bool eventFilter(QObject *obj, QEvent *event) override;
	void onTreeLeftClieck(const QPoint& pos);                      // 左键点击事件
private:
	Ui::UCarouselManagerClass ui;
	QStandardItemModel *model;
	CBaseCarouse *m_pRoot;
	CBaseCarouse * m_pNodeCurr;
	UCarousePage *m_pCarouseWidget;
public slots :
	void onTreeContextMenuRequested(const QPoint& pos);             // 请求右键菜单槽
	void slot_addNode();
	void slot_addPage(SPageItem item); 
	void renameNode(CBaseCarouse* node);
	void slot_deleteNode();
	void slot_runCarouse();    //开始轮播
	void slot_stopCarouse();   //停止轮播
	void slot_setInterval();   //设置轮播间隔
	void slot_enlarge();       //全屏
	void slot_refushNode(CBaseCarouse *pNode);  //刷新界面
signals:
	void sign_Show(int nIndex);
};
#endif